home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / tinytext.arc / TINYTEXT.C next >
C/C++ Source or Header  |  1985-09-30  |  4KB  |  110 lines

  1. /*    This code is to demonstrate the "Tiny Text  optiion of AT&T PC 6300 ROM
  2.      BIOS {int 10h}. AT&T does not support this part of the code at this time 
  3.      {ROM Rev. 1.0}.  There are some bugs in the code.  
  4.       According to page 8-11 of the "AT&T System Programers Guide, calling 
  5.      the ROM video services {int 10h} with ah == 0 and, al == 48h, 
  6.      should set the monochrome moniter to 80 collums by 50 lines.
  7.      Instead you get 80 collums by 25 lines on the top half of the screen and 
  8.      no scrolling.
  9.        To return to 80 colums by 25 lines useing mode.com. You must use the 
  10.      co80 or bw80 pramiter instead of 80 or the screen will blank.
  11.  
  12.        ROM release 2.1 has the bugs fixed!
  13.  
  14.      -----------    Warning  do not run on IBM pc.    --------------
  15.      I think the moniter could be dammaged, at the least you will have to
  16.      reboot.
  17.  
  18. writen by:
  19. harold barker
  20. P.O. Box 6051
  21. champaign, Illinois
  22. 61821-8051
  23.  
  24. */
  25.  
  26.  
  27. #include "stdio.h"
  28.  
  29. #define version "    v2.01"
  30. #define lastupdate "    09-29-1985"
  31.  
  32.                     /* vendor codes found at ffff:000e in rom */
  33. #define att 0x0               /* AT&T PC 6300 */
  34. #define compacplus 0x9a       /* Compac Plus */
  35. #define ibmpc 0xff            /* IBM PC */
  36. #define ibmxt 0xfe            /* IBM PC XT */
  37. #define ibmat 0xfc            /* IBM PC AT */
  38. #define ibmpcjr 0xfd          /* IBM PCjr
  39.  
  40.                     /* CRT mode values */
  41. #define tinytext 0x48         /* AT&T Tiny Text */
  42. #define mon80 0x2             /* monchrom 80x25 */
  43. #define mon40 0x0             /* monchrom 40x25 */
  44.  
  45.  
  46. int vendor;                   /* vendor code */
  47.  
  48. main(argc,argv)
  49. int argc;
  50. char *argv[];
  51. {
  52. char *com;
  53.  vendor = _peek(0xe,0xffff);
  54.  if (vendor == att)            /* if rom is AT&T PC 6300 */
  55.  {
  56.    if (argc == 2)            /* if there is only on pram on command line */
  57.    {
  58.                 /* make something intelligible out of it */
  59.    ((argv[1][0] =='/')||(argv[1][0]=='-')||(argv[1][0]==' ')) ? com = ++argv[1] : com = argv[1];
  60.    *com = toupper(*com);       /* make sure it is uppercase */
  61.    switch(*com)
  62.    {
  63.      case  'T' : mode(tinytext); break;
  64.      case  'E' : mode(mon80); break;
  65.      case  'F' : mode(mon40); break;
  66.          default : help(); break;
  67.    }                          /* end of switch argv[1] */
  68.    }                         /* end of if argc == 2 */
  69.  else                        /* if not argc == 2 */
  70.     help();                    /* give some help if needed */
  71.   }                            /* end of if vendor == AT&T */
  72. else                         /* if not runnig on an AT&T PC 6300 */
  73. {
  74.  help();
  75.  puts("\nTiny Text is a function of the AT&T PC 6300 ROM, and standerd 640x400\n");
  76.  puts("monochrome graphics.  Allowing 80 columns by 50 lines of text.\n");
  77.  puts("It would appear that your computer is unable to support this program.\n");
  78. }                            /* end of else not running on at&t pc 6300 */
  79. }                             /*end of main */
  80.  
  81.  
  82. help()
  83. {
  84. scr_rowcol(0,0);            /* jump to top left corrner of screen */
  85. scr_clr();                    /* clear screen */
  86. puts("\nTinyText"); puts(version); puts(lastupdate); puts("    harold barker\n");
  87. puts("\nUsage : A>tinytext [-/<space>]{n,f,h} \n");
  88. puts("Where :\n");
  89. puts("       e == 80x25 monochrome \n");
  90. puts("       f == 40x25 monochrome \n");
  91. puts("       h == this help screen\n");
  92. puts("       t == Tiny Text, AT&T PC 6300 only\n");
  93. puts("\nThere seems to be a bug in Mode.com.\n");
  94. puts("To return to 80x25 text from Tiny Text useing mode.com, use:\n");
  95. puts("A>mode co80<cr>  or   A>mode bw80\n");
  96. }                            /* end of help */
  97.  
  98.  
  99.  
  100. mode(l)                      /* call BIOS to set screen mode */
  101. char l;                        /* passed option */
  102. {
  103. #asm
  104.      mov       ah,0                ;set high byte of ax reg to 0
  105.                                    ;set mode opt for BIOS interrupt 10, video
  106.      mov       al,[bp+4]           ; move the passed var {l} to al
  107.                                    ; tiny type == 48h, 80x25 == 2h 40x25 == 0 all monochrome
  108.      int       10h                 ;call BIOS
  109. #
  110. }                           /* end of mode */